package container

import (
	"github.com/sirupsen/logrus"
	"os"
	"syscall"
)

/*
这里的init函数是在容器内部执行的也就是说，代码执行到这里之后，容器所在的进程其实就已经创建出来了，这里本容器执行的第一个进程
使用mount先去挂在proc文件系统，以便后面通过ps等系统命令去查看当前资源的情况
*/
func RunContainerInitProcess(command string, args []string) error {
	logrus.Infof("command %s", command)



	//syscall.Mount("", "/", "", syscall.MS_PRIVATE | syscall.MS_REC, "")

	defaultMountFlags := syscall.MS_NOEXEC | syscall.MS_NOSUID | syscall.MS_NODEV
	syscall.Mount("proc", "/proc", "proc", uintptr(defaultMountFlags), "")
	argv := []string{command}
	if err := syscall.Exec(command, argv, os.Environ()); err != nil {
		logrus.Errorf(err.Error())
	}
	return nil
}
